package cn.buk.api.szkj.service;

import cn.buk.api.szkj.dto.eterm.request.*;
import cn.buk.api.szkj.dto.eterm.response.*;

/**
 * @author yfdai
 */
public interface SzkjEtermService {

  /**
   * 调用接口执行原始指令，并得到反馈结果
   * @param etermUsername eterm用户名
   * @param etermPassword eterm密码
   * @param queryId 请求ID,最长32位字符，请确保唯一
   * @param cmd 要执行的命令
   * @return 返回结果
   */
  CmdResponse executeEtermCmd(String etermUsername, String etermPassword, int queryId, String cmd);

  /**
   * 提取编码, 他们提供的这个接口带验价
   * @param etermUsername eterm用户名
   * @param etermPassword eterm密码
   * @param queryId 查询id
   * @param request 请求参数对象
   * @return RtpnrResponse
   */
  RtpnrResponse rtpnr(String etermUsername, String etermPassword, int queryId, PnrRtRequest request);

  /**
   * 将符合条件的运价保存到PNR中
   * @param etermUsername eterm用户名
   * @param etermPassword eterm密码
   * @param queryId 查询id
   * @param request 请求参数对象
   * @return 返回结果
   */
  PnrPatResponse patPnr(String etermUsername, String etermPassword, int queryId, PnrPatRequest request);

  /**
   * 自动出票
   * @param etermUsername eterm用户名
   * @param etermPassword eterm密码
   * @param queryId 查询id
   * @param request 请求参数对象
   * @return 返回结果
   */
  EtdzResponse etdz(String etermUsername, String etermPassword, int queryId, EtdzRequest request);

  /**
   * 生成编码
   * @param etermUsername eterm用户名
   * @param etermPassword eterm密码
   * @param queryId 查询id
   * @param request 请求参数对象
   * @return CreatePnrResponse
   */
  CreatePnrResponse createPnr(String etermUsername, String etermPassword, int queryId, PnrCreateRequest request);

  /**
   * 取消PNR
   * @param etermUsername eterm用户名
   * @param etermPassword eterm密码
   * @param queryId 查询id
   * @param request 请求参数对象
   * @return CmdResponse
   */
  CmdResponse xepnr(String etermUsername, String etermPassword, int queryId, PnrXeRequest request);

  /**
   * DETR获取票号信息
   * @param etermUsername eterm username
   * @param etermPassword eterm password
   * @param queryId query id
   * @param request 请求参数对象
   * @return DetrResponse
   */
  DetrResponse detr(String etermUsername, String etermPassword, int queryId, DetrRequest request);

  TslResponse tsl(String etermUsername, String etermPassword, int queryId, TslRequest request);

  /**
   * 执行Q信箱处理
   * @param etermUsername eterm username
   * @param etermPassword eterm password
   * @param queryId query id
   * @param request 请求参数对象
   * @return QtResponse
   */
  QtResponse qt(String etermUsername, String etermPassword, int queryId, QtRequest request);

  /**
   * 执行Q信箱处理
   * @param etermUsername eterm username
   * @param etermPassword eterm password
   * @param queryId query id
   * @param request 请求参数对象
   * @return QnResponse
   */
  QnResponse qn(String etermUsername, String etermPassword, int queryId, QnRequest request);

  /**
   * 经停航班信息查询FF
   * @param etermUsername eterm username
   * @param etermPassword eterm password
   * @param queryId query id
   * @param request 请求参数对象
   * @return FfResponse
   */
  FfResponse ff(String etermUsername, String etermPassword, int queryId, FfRequest request);
  FdResponse fd(String etermUsername, String etermPassword, int queryId, FdRequest request);
}
